#ifndef CONFIG_H
#define CONFIG_H

#include <QString>
#include <QList>

class Config
{
public:
    Config();

    // 静态方法：进入/退出设置模式
    static QString enterConfigMode();
    static QString exitConfigMode();

    // 静态方法：保存配置
    static QString saveConfig();

    // 设置 NMEA 配置
    void setNmeaConfig(int msgId, double rate);
    // 设置 RTCM 配置
    void setRtcmConfig(int msgType, double rate);
    // 设置基准站配置
    void setBaseStationConfig(bool isAuto, double lat, double lon, double height);
    // 设置移动站
    void setMobileStation();
    // 设置陀螺计配置
    void setGyroConfig(double rate);
    // 设置加速度计配置
    void setAccelConfig(double rate);
    // 设置 TCP 配置（新增）
    void setTcpConfig(const QString &ip, int port, const QString &deviceId);
    // 设置 MQTT 配置
    void setMqttConfig(const QString &ip, int port, const QString &deviceId, const QString &username, const QString &password);
    // 设置 NTRIP 配置
    void setNtripConfig(const QString &ip, int port, const QString &mountPoint, const QString &username, const QString &password);

    // 查询命令（新增）
    static QString queryMode();
    static QString queryTcpConfig();
    static QString queryMqttConfig();
    static QString queryGyroConfig();
    static QString queryAccelConfig();
    static QString queryNtripConfig();

    // 生成命令列表
    QList<QString> generateCommands() const;

private:
    // NMEA 配置
    int nmeaMsgId;
    double nmeaRate;

    // RTCM 配置
    int rtcmMsgType;
    double rtcmRate;

    // 基准站/移动站配置
    bool baseStationIsAuto;
    double baseStationLat;
    double baseStationLon;
    double baseStationHeight;
    bool isMobileStation;

    // 陀螺计配置
    double gyroRate;

    // 加速度计配置
    double accelRate;

    // TCP 配置（新增）
    QString tcpIp;
    int tcpPort;
    QString tcpDeviceId;

    // MQTT 配置
    QString mqttIp;
    int mqttPort;
    QString mqttDeviceId;
    QString mqttUsername;
    QString mqttPassword;

    // NTRIP 配置
    QString ntripIp;
    int ntripPort;
    QString ntripMountPoint;
    QString ntripUsername;
    QString ntripPassword;
};

#endif // CONFIG_H